{% extends "base.html" %} {% block title %}Playsets · {{ app_name }}{% endblock %} {% block body %}

🎁 Playsets 📖

Content made by other people — training, prompts, mantras, wheel segments, habits, trance scores, badges, events — installed from one file, taken out as one unit. A playset is data: nothing in it runs.

{% if events %}

Events

{% for e in events %}
{{ e.sign }}
{{ e.name }} {{ e.event.starts }} → {{ e.event.ends }} · {{ e.days }} days · {% if e.state == 'running' %}day {{ e.day }}{% elif e.state == 'upcoming' %}starts in {{ e.starts_in_days }} day{{ '' if e.starts_in_days == 1 else 's' }}{% else %}ended{% endif %} {% if e.joined %} · you're in{% endif %} {% if not e.enabled %} · switched off{% endif %} {% if e.state == 'running' and e.joined %}

{{ e.line }}

{% endif %} {% if e.badges %}
{% for b in e.badges %}{{ b.icon }} {{ b.title }}{% endfor %}
{% endif %}
{% if e.state != 'ended' and not e.joined and e.enabled %}
{% elif e.joined and e.state != 'ended' %}
{% endif %}
{% endfor %}
{% endif %}

Installed

{% if installed %}
{% for p in installed %} {% set m = p.m %} {% endfor %}
playsetbycarries
{{ p.title }} {{ p.version }}{% if p.nsfw %} · 18+{% endif %}{% if m.event %} · event{% endif %}
{{ p.summary }}
{{ p.author or '—' }}
{{ p.license }}
{%- set parts = [] -%} {%- if m.tasks %}{% set _ = parts.append(m.tasks|length ~ ' training') %}{% endif -%} {%- if m.prompts %}{% set _ = parts.append(m.prompts|length ~ ' lines') %}{% endif -%} {%- if m.segments %}{% set _ = parts.append(m.segments|length ~ ' segments') %}{% endif -%} {%- if m.activities %}{% set _ = parts.append(m.activities|length ~ ' habits') %}{% endif -%} {%- if m.scores %}{% set _ = parts.append(m.scores|length ~ ' scores') %}{% endif -%} {%- if m.badges %}{% set _ = parts.append(m.badges|length ~ ' badges') %}{% endif -%} {{ parts|join(' · ') or 'nothing yet' }}
{% else %}

Nothing installed. The guide has the format and the catalogue.

{% endif %}

Install one

A .zip with playset.toml at its root, or a bare playset.toml. Up to {{ max_mb }} MB. It is checked first — an unknown key, a bad rule or a file it may not carry is refused with the reason, and nothing is written. Spec {{ spec }}. The app never downloads a playset; you bring the file.

{% endblock %}